<?php
class Afip_incoterms extends MY_Controller {

	public function __construct()
    {
    	# Al constructor le envío la clase Controlador, y el nombre de la entidad gestionada
    	parent::__construct(get_class($this), 'Afip_incoterm');

    	$this->title = 'AFIP :: Incoterms';
		$this->CARPETA_VISTAS = 'afip/';
		$this->nombre_entidad = 'Incoterm';
		$this->nombre_entidad_plural = $this->nombre_entidad . 's';

		$this->pagina_ver = $this->CARPETA_VISTAS . 'incoterm_ver_todos_view';
		$this->pagina_editar = $this->CARPETA_VISTAS . 'incoterm_edit_view';
		$this->pagina_filtros_ver = $this->CARPETA_VISTAS . 'incoterm_filtros_ver_todos_view';

		$this->exportarExcelPermitido = FALSE;
	}

	/* IMPORTANTE: DEBE existir esta función. 
	 * Crea un objeto de la entidad correspondiente y lo pobla con la información obtenida a 
	 * partir del formulario recibido a través de POST.	*/
	protected function getObjetoDesdeForm()
	{
		$idEntidad = is_numeric($this->input->post('txt_id')) ? $this->input->post('txt_id') : NULL;
		
		$objEntidad = $this->getObjeto($idEntidad);
		$objEntidad->codigo = $this->input->post('txt_codigo');
		$objEntidad->descripcion = $this->input->post('txt_descripcion');

		$datos['objEntidad'] = $objEntidad;
		$datos['objRelacionados'] = array();

		return $datos;
	}

	/* IMPORTANTE: DEBE existir esta función. 
	 * Carga en el arreglo que luego se pasarán a las vistas, los datos correspondientes a otras entidades que se
	 * necesiten. Por ejemplo, en este método deben cargarse las entidades a las que puede asociarse o relacionarse
	 * la entidad actual. Si no se requiriesen, no se agrega nada. */
	protected function cargarDatosRelacionados($dataView)
	{
		return $dataView;
	}

	/* IMPORTANTE: DEBE existir esta función. 
	 * Obtiene el listado de elementos de acuerdo a los filtros que se hayan establecido y enviado a través
	 * del método POST. Devuelve un detalle de los filtros aplicados (o vacío si no hubiera filtros)	*/	
	protected function _aplicarFiltros($dataView = array())
	{
		// Creo un objeto del modelo, para poblarlo con los datos que necesito mostrar
		$objEntidad = $this->getObjeto();
		$detalle_filtros = '';

		$codigo = trim($this->input->post('f_txt_codigo'));
		if(!empty($codigo)) { 
			$objEntidad->like('codigo', $codigo); 
			$detalle_filtros .= (!empty($detalle_filtros) ? ' | ' : '') . 'Código AFIP => ' . $codigo;
		}

		$nombre = trim($this->input->post('f_txt_descripcion'));
		if(!empty($nombre)) { 
			$objEntidad->like('descripcion', $nombre); 
			$detalle_filtros .= (!empty($detalle_filtros) ? ' | ' : '') . 'Descripción => ' . $nombre;
		}
		
		$dataView['objEntidad'] = $objEntidad;
		$dataView['detalle_filtros'] = $detalle_filtros;

		return $dataView;
	}

/* IMPORTANTE: DEBE existir esta función.
	 * Valida las condiciones que deben cumplirse para que un elemento pueda ELIMINARSE. */
	protected function validarEliminacion($id_elemento)
	{
		$objEntidad = $this->getObjeto($id_elemento);
		return $objEntidad->editable;
	}

	/* IMPORTANTE: DEBE existir esta función.
	 * Valida las condiciones que deben cumplirse para que un elemento pueda EDITARSE. */
	protected function validarEdicion($id_elemento)
	{
		$objEntidad = $this->getObjeto($id_elemento);
		if(!$objEntidad->exists()) return TRUE;
		else return $objEntidad->editable;
	}

	protected function setAyuda($dataView) {
		$dataView['descripcion_breve'] = 'Incoterms (acrónimo del inglés International Commercial Terms, ‘términos internacionales de comercio’) son términos, 
										de tres letras cada uno, que reflejan las normas de aceptación voluntaria por las dos partes —compradora y vendedora—, acerca de las condiciones de entrega 
										de las mercancías y/o productos. Se usan para aclarar los costes de las transacciones comerciales internacionales, delimitando las responsabilidades entre 
										el comprador y el vendedor, y reflejan la práctica actual en el transporte internacional de mercancías. </br>
										En este formulario se establecen los incoterms según las tablas de AFIP.';
		$dataView['ayuda_edicionPosible'] = 'La información que fue obtenida a partir de datos publicados por AFIP, no se puede editar.';
		$dataView['ayuda_borradoPosible'] = 'La información que fue obtenida a partir de datos publicados por AFIP, no se puede borrar.';

		return $dataView;
	}
}